const { PrismaClient } = require('@prisma/client');
const bcrypt = require('bcryptjs');

const prisma = new PrismaClient();

/**
 * 创建管理员账户
 */
async function createAdmin() {
  try {
    console.log('🚀 开始创建管理员账户...');
    
    // 检查是否已存在管理员
    const existingAdmin = await prisma.administrators.findFirst({
      where: { username: 'admin' }
    });
    
    if (existingAdmin) {
      console.log('⚠️ 管理员账户已存在');
      console.log('用户名:', existingAdmin.username);
      console.log('创建时间:', existingAdmin.created_at);
      return existingAdmin;
    }
    
    // 创建管理员账户
    const hashedPassword = await bcrypt.hash('admin123', 10);
    
    const admin = await prisma.administrators.create({
      data: {
        username: 'admin',
        password: hashedPassword
      }
    });
    
    console.log('✅ 管理员账户创建成功！');
    console.log('用户名: admin');
    console.log('密码: admin123');
    console.log('管理员ID:', admin.id);
    console.log('');
    console.log('🔐 请妥善保管登录信息！');
    
    return admin;
    
  } catch (error) {
    console.error('❌ 创建管理员失败:', error);
    throw error;
  } finally {
    await prisma.$disconnect();
  }
}

// 如果直接运行此脚本
if (require.main === module) {
  createAdmin()
    .then(() => {
      process.exit(0);
    })
    .catch((error) => {
      console.error('❌ 脚本执行失败:', error);
      process.exit(1);
    });
}

module.exports = { createAdmin };
